package com.cmc.cloud.cmclink.doc.strategy.impl;

import com.cmc.cloud.cmclink.doc.entity.BlnoDO;
import com.cmc.cloud.cmclink.doc.enums.PrintStatusEnum;
import com.cmc.cloud.cmclink.doc.strategy.DocumentObjectivesStrategy;

/**
 * 预览策略
 * @author lyp
 * @date 2025/8/19
 */
public class PreviewBlStrategy implements DocumentObjectivesStrategy {
    @Override
    public String getDocumentObjectives(BlnoDO blnoDO) {
        // 判断是否为海南主体且签发类型是海运单
        if (PrintStatusEnum.HN.getValue().equals(blnoDO.getBlEntity()) && PrintStatusEnum.W.getValue().equals(blnoDO.getSignType())) {
            return "HN-SeaWayBL";
        }
        //主体B/L entity是海南，签发类型Sign Type是纸质Original B/L
        if (PrintStatusEnum.HN.getValue().equals(blnoDO.getBlEntity()) && PrintStatusEnum.B.getValue().equals(blnoDO.getSignType())) {
            return "HN-OriginalBL";
        }
        //  主体B/L entity是海外，签发类型Sign Type是海运单Seaway B/L
        if (PrintStatusEnum.HW.getValue().equals(blnoDO.getBlEntity()) && PrintStatusEnum.W.getValue().equals(blnoDO.getSignType())) {
            return "HN-SeaWayBL";
        }
        // 主体B/L entity是海外，签发类型Sign Type是纸质Original B/L
        if (PrintStatusEnum.HW.getValue().equals(blnoDO.getBlEntity()) && PrintStatusEnum.B.getValue().equals(blnoDO.getSignType())) {
            return "HW-OriginalBL";
        }
        // 主体B/L entity是海外，签发类型Sign Type是电放O.B/L Surrendered
        if (PrintStatusEnum.HW.getValue().equals(blnoDO.getBlEntity()) && PrintStatusEnum.T.getValue().equals(blnoDO.getSignType())) {
            return "HW-OBLSurrendered";
        }
        // 主体B/L entity是集运、签发类型Sign Type是海运单Seaway B/L
        if (PrintStatusEnum.SNL.getValue().equals(blnoDO.getBlEntity()) && PrintStatusEnum.W.getValue().equals(blnoDO.getSignType())) {
            return "SNL-SeaWayBL";
        }
        // 主体B/L entity是集运、签发类型Sign Type是纸质Original B/L
        if (PrintStatusEnum.SNL.getValue().equals(blnoDO.getBlEntity()) && PrintStatusEnum.B.getValue().equals(blnoDO.getSignType())) {
            return "SNL-OriginalBL";
        }
        //  主体B/L entity是集运、签发类型Sign Type是电放O.B/L Surrendered
        if (PrintStatusEnum.SNL.getValue().equals(blnoDO.getBlEntity()) && PrintStatusEnum.T.getValue().equals(blnoDO.getSignType())) {
            return "SNL-OBLSurrendered";
        }
        return "";
    }

    @Override
    public PrintStatusEnum getSupportStatus() {
        return PrintStatusEnum.PREVIEWBL;
    }
}